Iceberg的能力、使用场景和对比优势

您所在的位置:网站首页 hive 开源厂商 Iceberg的能力、使用场景和对比优势

Iceberg的能力、使用场景和对比优势

2023-11-28 07:59| 来源: 网络整理| 查看: 265

Iceberg是一种开放的数据湖表格式。您可以借助Iceberg快速地在HDFS或者阿里云OSS上构建自己的数据湖存储服务,并借助开源大数据生态的Spark、Flink、Hive和Presto等计算引擎来实现数据湖的分析。

核心能力

Apache Iceberg设计初衷是为了解决Hive数仓上云的问题,经过多年迭代已经发展成为云上构建数据湖服务的表格式标准。关于Apache Iceberg的更多介绍,请参见Apache Iceberg官网。

目前Iceberg提供以下核心能力: 基于HDFS或者对象存储构建低成本的轻量级数据湖存储服务。 实现主流开源计算引擎入湖和分析场景的完善对接。 完善的ACID语义。 支持行级数据变更能力。 支持历史版本回溯。 支持高效的数据过滤。 支持Schema变更(Schema Evolution)。 支持分区布局变更(Partition Evolution)。 支持隐式分区(Hidden Partitioning)。 为了便于理解数仓和Iceberg数据湖在系统架构、业务价值和成本方面的差异,选择了业界流行的Clickhouse实时数仓、Hive离线数仓和Iceberg数据湖三种具体的技术架构,为您进行了对比,详细信息如下表。 对比项 子项目 开源Clickhouse实时数仓 开源Hive离线数仓 阿里云Iceberg数据湖 系统架构 架构 计算存储一体 计算存储分离 计算存储分离 多计算引擎支持 不支持 支持 支持 数据存储在对象存储 不支持 支持不完善 支持 数据存储在HDFS 不支持 支持 支持 存储格式开放性 不开放 开放 开放 业务价值 时效性 秒级 小时级/天级 分钟级 计算灵活性 低 强 强 事务性 不支持 不完善 支持 表级语义通用性 差 差 优秀 行级数据变更 不支持 支持较弱 支持 数据质量 非常高 较高 较高 维护成本 查询性能 高 较高 较高 存储成本 非常高 一般 低 自助服务 不支持 不支持 支持 资源弹性 一般 一般 优秀 与开源Iceberg对比 从基础功能、数据变更和计算引擎等方面,对比了阿里云Iceberg与开源Iceberg,详细信息如下表。 说明 “√”表示支持,“x”表示暂未支持。 类别 项目 子项目 开源Iceberg Iceberg商业版(阿里云) 基础功能 ACID 无 √ √ 历史版本回溯 无 √ √ Source和Sink集成 Batch √ √ Streaming √ √ 高效数据过滤 无 √ √ 数据变更 Schema Evolution 无 √ √ Partition Evolution 无 √ √ CopyOnWrite更新 无 √ √ MergeOnRead更新 Read √ √ Write √ √ Compaction x x 计算引擎 Apache Spark 读取 √ √ 写入 √ √ Apache Hive 读取 √ √ 写入 √ √ Apache Flink 读取 √ √ 写入 √ √ PrestoDB或Trino 读取 √ √ 写入 √ √ 编程语言 Java 无 √ √ Python 无 √ √ 高级功能 原生接入阿里云OSS 无 x √ 原生接入阿里云DLF 无 x √ 本地数据缓存加速 无 x √ 自动合并小文件 无 x √ 说明 以上信息是在2021年9月份,客观分析开源Iceberg和商业版Iceberg现状之后制定的表格。随着后续版本的不断迭代升级,对比项状态可能发生变化。 适用场景

Iceberg作为通用数据湖解决方案中最核心的组件之一,主要适用于以下场景。

场景 描述 实时数据导入和查询 数据实时从上游流入Iceberg数据湖,查询侧即可查询该数据。例如,在日志场景中,启动Flink或Spark流作业,实时地将日志数据导入Iceberg表中,然后可以使用Hive、Spark、Flink或Presto进行实时查询。同时,由于Iceberg支持ACID,保证了数据的流入和查询的隔离性,不会产生脏数据。 删除或更新数据 大部分数仓都难以实现较为高效的行级数据删除或更新,通常需要启动离线作业把整个表原始数据读取出来,然后变更数据后,写入到一个原始表。而Iceberg成功把变更的范围从表级别缩小到了文件级别,从而可以通过局部变更来完成业务逻辑的数据变更或删除。

在Iceberg数据湖中,您可以直接通过执行类似命令DELETE FROM test_table WHERE id > 10,来完成表中数据的变更。

数据质量控制 借助于Iceberg Schema的校验功能,在数据导入时剔除异常数据,或者对异常数据做进一步处理。 数据Schema变更 数据的Schema并非固定不变,Iceberg支持通过Spark SQL的DDL语句完成表结构变更。Spark DDL详细信息,请参见Spark DDL。

Iceberg在变更表结构的时候,历史数据并不需要全部重新按照新的Schema导出一份,从而使得Schema变更的速度非常快。同时,由于Iceberg支持ACID,有效地隔离了Schema变更对现有读取任务的影响,从而使得您可以读取到结果一致的数据。

实时机器学习 通常在机器学习场景中,需要花费大量的时间处理数据,例如,数据清洗、转换和提取特征等,还需要对历史数据和实时数据进行处理。而Iceberg简化了工作流程,整条数据处理过程是一条完整的、可靠的实时流,其数据的清洗、转换和特征化等操作都是流上的节点动作,无需处理历史数据和实时数据。此外,Iceberg还支持原生的Python SDK,对于机器学习算法的开发者非常友好。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3